package com.qf.pojo;

import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.Map;

//购物车实体
//购物车有两个属性,key-->商品id  value-->购物车项
//为保证迭代顺序一致性,使用linkedhashmap
public class Cart {
    //定义购物车项
     private    Map<String,CartItem> map = new LinkedHashMap<>();
     //商品总价
    private Double totalMoney = 0.0;
    public Collection<CartItem> getItems(){
        return map.values();
    }

    public Cart() {
    }

    public Cart(Map<String, CartItem> map, Double totalMoney) {
        this.map = map;
        this.totalMoney = totalMoney;
    }
    //提供set/get方法

    public Map<String, CartItem> getMap() {
        return map;
    }

    public void setMap(Map<String, CartItem> map) {
        this.map = map;
    }

    public Double getTotalMoney() {
        return totalMoney;
    }

    public void setTotalMoney(Double totalMoney) {
        this.totalMoney = totalMoney;
    }
    //获取map集合中的所有的购物车项
    public Collection<CartItem> getCartItem(){
        return map.values();
    }
    //定义将购物车项添加到购物车中
    public void addItem2Cart(CartItem cartItem){
        //首先需要判断购物车中是否有该购物车项
        //从购物车项获取pid
        String pid = cartItem.getProduct().getPid();
        if (map.containsKey(pid)){
            //如果存在,通过pid获取已经存在的购物车项
            CartItem oldcartItem = map.get(pid);
            //已经存在,只需要将购物车项中的商品数量增加即可
            oldcartItem.setCount(oldcartItem.getCount()+cartItem.getCount());
        }else{
            //如果不重复,直接添加

            map.put(pid,cartItem);
        }
        //总计金额为
        cartItem.setSubTotal(cartItem.getSubTotal());
        totalMoney += cartItem.getSubTotal();

    }
    //将购物车从购物车中删除
    public void delCartItem(String pid){
        //通过pid将购物车项直接删除
        CartItem cartItem = map.remove(pid);
        //总金额发生变化
        totalMoney-=cartItem.getSubTotal();
    }
    //清空购物车
    public void clear(){
        //暴力删除
        map.clear();
        totalMoney=  0.0;
    }
}
